/*
 * Debts Manager. Simple android application for managing debts.
 * Copyright (C) 2010 Maxim Manuylov
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/gpl-2.0.html>.
 */

package manuylov.maxim.dm.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.*;

public class ImprovedAutoCompleteTextEdit extends LinearLayout {
    private final AutoCompleteTextView myAutoCompleteTextView;
    private final Button myButton;

    public ImprovedAutoCompleteTextEdit(final Context context) {
        this(context, null);
    }

    public ImprovedAutoCompleteTextEdit(final Context context, final AttributeSet attrs) {
        super(context, attrs);
        setOrientation(HORIZONTAL);

        myAutoCompleteTextView = new AutoCompleteTextView(context);
        myAutoCompleteTextView.setInputType(EditorInfo.TYPE_CLASS_TEXT);

        myButton = new Button(context);
        myButton.setText("...");
        myButton.setOnClickListener(new OnClickListener() {
            public void onClick(final View v) {
                myAutoCompleteTextView.showDropDown();
            }
        });

        final LayoutParams textViewLayoutParams = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 1);
        textViewLayoutParams.gravity = Gravity.CENTER_VERTICAL;
        addView(myAutoCompleteTextView, textViewLayoutParams);

        final LayoutParams buttonLayoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        buttonLayoutParams.gravity = Gravity.CENTER_VERTICAL;
        addView(myButton, buttonLayoutParams);
    }

    public <T extends ListAdapter & Filterable> void setAdapter(final T adapter) {
        myAutoCompleteTextView.setAdapter(adapter);
    }

    public TextView asTextView() {
        return myAutoCompleteTextView;
    }
}
